package com.github.binarywang.demo.wx.mp.handler;

import cn.hutool.core.map.MapUtil;
import com.github.binarywang.demo.wx.mp.builder.TextBuilder;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author <a href="https://github.com/binarywang">Binary Wang</a>
 */
@Component
public class MsgHandler extends AbstractHandler {

    private static final Map<String, String> ANSWER_MAP = MapUtil.<String, String>builder()
            .put("你好", "大家好才是真的好")
            .put("HI", "Hi~~")
            .put("HELLO", "What can I do for you?")
            .build();

    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                    Map<String, Object> context, WxMpService weixinService,
                                    WxSessionManager sessionManager) {

        // if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) {
        //     // TODO 可以选择将消息保存到本地
        // }

        // 当用户输入关键词如“你好”，“客服”等，并且有客服在线时，把消息转发给在线客服
        // try {
        //     if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
        //             && weixinService.getKefuService().kfOnlineList()
        //             .getKfOnlineList().size() > 0) {
        //         return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE()
        //                 .fromUser(wxMessage.getToUser())
        //                 .toUser(wxMessage.getFromUser()).build();
        //     }
        // } catch (WxErrorException e) {
        //     e.printStackTrace();
        // }

        // TODO 组装回复消息
        String content = wxMessage.getContent().trim();
        String answer = ANSWER_MAP.get(content.toUpperCase());
        if (StringUtils.isEmpty(answer)) {
            answer = "不知道你在胡说什么";
        }
        return new TextBuilder().build(answer, wxMessage, weixinService);

    }

}
